En el desarrollo temprano de JavaScript, Contaminación del Espacio de Nombres era un obstáculo importante. Cuando código no relacionado comparte un único conjunto de nombres de variables globales, ocurren colisiones impredecibles. El diseño moderno abandona una actitud desestructurada hacia Sistemas de Módulos Aislados.
1. Aislamiento Funcional (IIFE)
Al envolver el código en una Expresión de Función Inmediatamente Invocada (IIFE), creamos un ámbito privado. Variables como nombres quedan atrapadas dentro de la función, inaccesibles desde el entorno global.
var interno = "secreto";
console.log(interno);
})();
2. Interfaces Basadas en Objetos
Para proporcionar funcionalidad al mundo exterior, un módulo devuelve un objeto que actúa como su interfaz pública. Esto agrupa métodos relacionados (como nombre y número) bajo una única variable global recuperada.
3. El Patrón de Exportaciones
Una variante sofisticada implica pasar un exports objeto a la IIFE. Esto permite que el módulo adjunte su API directamente a un destino específico de espacio de nombres, ofreciendo flexibilidad en cómo se consume el módulo.